package com.bsj.travel.def.global;

/**
 * @author yinhao
 * @version 1.0
 * @description 返回状态枚举类
 * @date 2022/8/26
 */
public enum JsonResultEnum {

    SUCCESS(200, "请求成功"),
    FAIL(500, "请求失败"),
    NOT_INNER_AUTH(201, "没有内部访问权限，不允许访问"),
    NOT_INNER_USER(202, "没有设置用户信息,，不允许访问"),
    NOT_USER_INFO_ERROR(203, "消息获取失败"),
    PARAM_ERROR(204, "参数错误"),

    // 异常
    EXCEPTION(10000, "网络异常"),
    RUNTIME_EXCEPTION(10001, "内部运行异常"),
    PARAM_CAST_EXCEPTION(10002, "参数转换错误"),
    FEIGN_SERVICE_EXCEPTION(10003, "内部服务异常"),

    // 方法返回判断
    NOT_AUTH_ISNULL(11001, "令牌不能为空"),
    USER_LOGIN_AUTH_NULL(11002, "登录状态已过期"),
    USER_INFO_ISNULL(11003, "用户信息不存在"),
    USER_IN_DEACTIVATE(11004, "账号已停用"),
    USER_INFO_ERROR(11005, "用户不存在/密码错误"),
    NOT_AUTH(11006, "无权限"),
    REQUEST_TIMEOUT(11007, "请求超时"),
    COMMON_PARAM_IS_NULL(11008, "请传递所需公共参数"),
    NOT_ERR_OPEN_AUTH(11009, "请求失败，鉴权不通过"),


    /******************************************************用户操作***************************************************/
    LOGIN_EXIT(401, "已退出，请重新登录"),
    PERMISSION_EXCEPTION(402, "没有访问权限，请联系管理员授权"),
    SERVER_NOT_FOUND(404, "服务未找到"),
    ACCOUNT_PASSWORD_NULL(20001, "账号密码不能为空"),
    USER_NOT_EXIST(200002, "用户不存在"),
    PASSWORD_ERROR(200003, "密码错误"),
    LOGIN_OUT_ERROR(200004, "登出失败"),
    CAPTCHA_NULL_ERROR(200005, "验证码不能为空"),
    CAPTCHA_INVALID(200006, "验证码已失效"),
    CAPTCHA_ERROR(200007, "验证码错误"),
    USER_NAME_EXIST(200008, "用户名已存在"),
    PHONE_FORMAT_ERROR(200009, "手机号格式错误"),
    NEW_PASSWORD_NULL(200010, "新密码不能为空"),
    LOGIN_AGAIN(200011, "密码修改完成，请重新登录"),
    CODE_EXIST(200012, "客户代码已存在"),
    PRODUCT_EXIST_UNDER_THE_USER(200013, "账号下存在产品不能删除"),
    LOGIN_USERNAME_NOT_MATCHER(200014, "用户名仅支持数字和字母，长度在20位以内"),

    /**************************************************API操作************************************************/
    /**
     * Mqtt Broker
     **/
    QUERY_NODES_FAIL(30001, "服务节点获取失败"),
    QUERY_ONLINE_CLIENT_SIZE_FAIL(30002, "获取所有在线的客户端数量失败"),
    QUERY_ONLINE_CLIENTS_FAIL(30003, "获取所有在线的客户端失败"),
    QUERY_NODE_ONLINE_SIZE_FAIL(30004, "获取对应节点客户端在线数量失败"),
    QUERY_NODE_ONLINE_CLIENTS_FAIL(30005, "获取对应服务节点的客户端失败"),
    SEND_MQTT_MSG_FAIL(30006, "物联网消息下行失败，请重试"),
    MQTT_CONNECT_TAKE_FAIL(30007, "MQTT状态管理失败，请重试"),

    /**
     * 设备-产品相关
     **/
    PRODUCT_IS_ADD_FAIL(31001, "产品添加失败"),
    PRODUCT_LIST_IS_QUERY_FAIL(31002, "产品列表获取失败"),
    PRODUCT_IS_DELETE_FAIL(31003, "产品删除失败"),
    PRODUCT_TOPIC_QUERY_ALL_FAIL(31004, "获取产品下主题失败"),
    EVENT_IS_NOT_EXIST(31005, "功能标签不存在"),
    TOPIC_IS_NOT_EXIST(31006, "主题不存在"),
    PUBLIC_TOPIC_CANNOT_BE_ADD(31007, "公共主题无法添加"),
    PUBLIC_TOPIC_CANNOT_BE_DELETE(31008, "公共主题无法删除"),
    PUBLIC_TOPIC_CANNOT_BE_UPDATE(31009, "公共主题无法修改"),
    CANNOT_CHANGE_THE_BINDING_PRODUCT(31010, "无法改绑产品"),
    TOPIC_CLASS_FORMAT_ERROR(31011, "Topic类格式错误"),
    TOPIC_CLASS_IS_NOT_NULL(31012, "改产品下已存在相同的Topic类"),
    TOPIC_CLASS_NOT_PUB(31013, "该Topic类无发布权限"),

    /**************************************************产品 设备 操作**************************************************/
    PRODUCT_IS_NOT_NULL(40001, "产品已存在"),
    PRODUCT_IS_NOT_EXIST(40002, "产品不存在"),
    DEVICE_IS_NOT_NULL(40003, "设备信息不为空，请先清除该产品下设备信息"),
    DEVICE_NAME_IS_NOT_NULL(40004, "设备号已存在"),
    DEVICE_IS_NOT_EXIST(40005, "设备不存在"),
    FILE_IS_NULL(40006, "文件为空"),
    FILE_FORMAT_ERROR(40007, "文件格式不正确"),
    FILE_MODEL_BIG(40008, "数据不能超过10000条"),
    DEVICE_NAME_FORMAT_ERROR(40009, "设备号格式错误"),
    NO_EXPORT_DATA(40010, "无导出数据"),
    PRODUCT_KEY_IS_NULL(40011, "产品KEY不能为空"),
    SEARCH_TYPE_IS_NULL(40012, "搜索类型不能为空"),
    NODES_TYPE_IS_NOT_EXIST(40013, "节点类型不存在"),
    NETWORK_TYPE_IS_NOT_EXIST(40014, "网络类型不存在"),
    DEVICE_INFO_IS_NULL(40015, "设备信息不能为空"),
    DEVICE_NAME_IS_NULL(40004, "设备号不能为空"),
    PRODUCT_NAME_IS_EXIST(40002, "产品名称已存在，不能重复创建"),


    /**************************************************角色******************************************************/
    ROLE_IS_NOT_EXIST(50001, "角色不存在"),
    ROLE_NAME_IS_NOT_NULL(50002, "角色名称已存在"),

    /**************************************************权限******************************************************/
    MENU_IS_NOT_EXIST(60001, "权限不存在"),
    MENU_NAME_IS_NOT_NULL(60002, "权限名称已存在"),
    MENU_SIGN_IS_NOT_NULL(60003, "权限标识已存在"),

    /**************************************************品类******************************************************/
    CATEGORY_IS_NULL(70001, "请选择品类"),
    CATEGORY_IS_NOT_EXIST(70002, "品类不存在"),
    CATEGORY_CANNOT_BE_UPDATE(70003, "品类无法更改"),
    CATEGORY_NAME_IS_EXIST(70004, "品类名称已存在"),
    CONTENT_IS_NULL(70005, "内容不能为空"),

    /**************************************************监控******************************************************/
    CRON_FORMAT_ERROR(80001, "Cron表达式不正确"),
    RMI_FORMAT_ERROR(80002, "目标字符串不允许rmi,ldap,http调用"),
    STRING_FORMAT_ERROR(80003, "目标字符串不允许rmi,ldap,http调用"),

    /**************************************************升级包****************************************************/
    UPGRADE_PACKAGE_NAME_IS_NOT_NULL(90001, "升级包名称已存在"),
    UPGRADE_PACKAGE_UPLOAD_FAIL(90002, "升级包上传失败"),
    UPGRADE_PACKAGE_IS_NOT_EXIST(90003, "升级包不存在"),

    /**************************************************订阅*****************************************************/
    SUBSCRIBE_IS_NOT_EXIST(100001, "订阅不存在"),
    SECRET_KEY_IS_NULL(100002, "密钥不能为空"),
    SUBSCRIBE_TYPE_CANNOT_BE_UPDATE(100003, "订阅类型无法修改"),
    PUSH_TYPE_IS_NULL(100004, "推送类型不能为空"),
    PUSH_TYPE_IS_NOT_EXIST(100005, "推送类型不存在"),
    SECRET_KEY_CANNOT_CONTAIN_CHINESE(100006, "秘钥不能包含中文"),
    SECRET_KEY_FORMAT_ERROR(100007, "秘钥应为128位(16字节),192位(24字节),256位(32字节)"),
    ;


    private Integer code;
    private String msg;

    JsonResultEnum(Integer code, String message) {
        this.code = code;
        this.msg = message;
    }

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}
